package com.shujia.day04;

/*
    数组元素逆序
    分析：
        1、交换的次数是长度/2的整除
        2、交换的时候，需要使用到一个临时变量
 */
public class ArrayTest3 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7};
        System.out.println("逆序前：");
        printIntArray(arr);
        System.out.println("-------------------------------");
//        //第一次交换，将第1个元素与最后一个元素交换
//        int tmp1 = arr[arr.length-0-1];
//        arr[arr.length-0-1] = arr[0];
//        arr[0] = tmp1;
//        //第二次交换，将第2个元素与倒数第2个元素交换
//        int tmp2 = arr[arr.length-1-1];
//        arr[arr.length-1-1] = arr[1];
//        arr[1] = tmp2;
//        //第三次交换，将第3个元素与倒数第3个元素交换
//        int tmp3 = arr[arr.length-2-1];
//        arr[arr.length-2-1] = arr[2];
//        arr[2] = tmp3;
//        System.out.println("逆序后：");
//        printIntArray(arr);

        //使用for循环解决
//        for (int i = 0; i < arr.length/2; i++) {
//            int tmp = arr[arr.length - i - 1];
//            arr[arr.length - i - 1] = arr[i];
//            arr[i] = tmp;
//        }

//        int[] resArr = niXu1(arr);
//        System.out.println("逆序后：");
//        printIntArray(resArr);

        int[] resArr = niXu2(arr);
        System.out.println("逆序后：");
        printIntArray(resArr);

    }

    public static int[] niXu2(int[] arr) {
        for (int front = 0, end = arr.length - 1; front < end; front++, end--) {
            int tmp = arr[end];
            arr[end] = arr[front];
            arr[front] = tmp;
        }
        return arr;
    }


    public static int[] niXu1(int[] arr) {
        for (int i = 0; i < arr.length / 2; i++) {
            int tmp = arr[arr.length - i - 1];
            arr[arr.length - i - 1] = arr[i];
            arr[i] = tmp;
        }
        return arr;
    }

    public static void printIntArray(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (i == 0) {
                System.out.print("[" + arr[i] + ",");
            } else if (i == arr.length - 1) {
                System.out.println(arr[i] + "]");
            } else {
                System.out.print(arr[i] + ",");
            }
        }
    }
}
